package com.divemotor.ventarepuestosinternet.beans.lazy;

import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import com.divemotor.ventarepuestosinternet.beans.adapter.ModeloFabricaAdapter;
import com.divemotor.ventarepuestosinternet.exception.DivemotorBusinessException;
import com.divemotor.ventarepuestosinternet.service.ModeloFabricaService;
import com.divemotor.ventarepuestosinternet.util.Paginacion;

public class ModeloFabricaLazy extends LazyDataModel<ModeloFabricaAdapter> {

	public static final Logger logger = Logger.getLogger(ModeloFabricaLazy.class);
	private static final long serialVersionUID = 1L;
	
	List<ModeloFabricaAdapter> listaModeloFabrica;
	ModeloFabricaService modeloFabricaService;
	ModeloFabricaAdapter modeloFabrica;
	Integer nroRegistros;

	public ModeloFabricaLazy(ModeloFabricaService modeloService, ModeloFabricaAdapter modeloFabrica) {
		this.modeloFabricaService = modeloService;
		this.modeloFabrica = modeloFabrica;
	}

	@Override
	public List<ModeloFabricaAdapter> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
		try {
			Paginacion paginacion = new Paginacion();
			paginacion.setFinPagina(pageSize);
			paginacion.setInicioPagina(first);
			paginacion.setOrdenarLabel(sortField);
			paginacion.setDireccionOrden(sortOrder.toString());
			
			modeloFabrica.setNombre(filters.get("nombre"));
			modeloFabrica.setIdModeloFabrica(filters.get("idModeloFabrica"));
						
			listaModeloFabrica = modeloFabricaService.buscarModeloFabricaPorDescripcionMarcaYTipoComponente(paginacion,modeloFabrica);
			filters.remove("nombre");
			filters.remove("modeloFabricaPK.idModeloFabrica");
			
			nroRegistros = paginacion.getRegTotal();
			
			setRowCount(nroRegistros);
			
		} catch (DivemotorBusinessException e) {
			logger.error("EX* buscarModelofabricaSeleccion: " + e.getMessage());
		}
		return listaModeloFabrica;
	}
	
	@Override
	public void setRowIndex( int rowIndex ){
	   if ( rowIndex == -1 || getPageSize() == 0 ){
		   super.setRowIndex( -1 );
	   }else{
		   super.setRowIndex( rowIndex % getPageSize() );
	   }
	}

	public Integer getNroRegistros() {
		return nroRegistros;
	}

	public void setNroRegistros(Integer nroRegistros) {
		this.nroRegistros = nroRegistros;
	}	
	
}
